package com.o2o.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * package_name:com.o2o.utils
 * Author:徐亚远
 * Date:2019/11/29 9:48
 * 项目名:o2o
 * Desription:
 **/
public class FileUtil {
    //打印日志
    private static final Logger logger = LoggerFactory.getLogger(FileUtil.class);
    // 路径分隔符. 在 类UNIX系统上为 '/',在 windows 系统上，它为 '\'
    private static String seperator = System.getProperty("file.separator");

    /**
     * @return
     * @Title: getImgBasePath
     * @Description: 根据不同的操作系统, 获取图片的存放路径。
     * <p>
     * 一般情况下都是将图片存放到专门的图片服务器或者主机上的其他目录。
     * 而存放的目录路径，都是以配置项的形式存放在数据库配置表中或者配置文件中。
     * <p>
     * 这里为了简单起见，我们直接将路径硬编码在代码中。
     * <p>
     * 图片存储的根路径
     * @return: String
     */
    public static String getImgBasePath() {
        String os = System.getProperty("os.name");
        logger.debug("os.name: {}", os);
        String basePath = "";
        if (os.toLowerCase().startsWith("win")) {
            basePath = "D:/o2o-image/";
        } else {
            basePath = "D:/o2o-home-image";
        }
        // 根据操作系统的不同，使用当前操作系统的路径分隔符替换掉，我们写的basePath中的路径分隔符，当然了也可以在basePath赋值的时候直接使用seperator
        basePath = basePath.replace("/", seperator);
        logger.debug("basePath: {}", basePath);
        return basePath;
    }

    /**
     * @param shopId
     * @return
     * @Title: getShopImagePath
     * @Description: 获取特定商铺的图片的路径, 根据shopId来区分。理应配置到数据库配置表中或者配置文件中。
     * <p>
     * 同样的这里为了简化操作,硬编码
     * <p>
     * 约定每个店铺下的图片分别存放在对应的店铺id下
     * <p>
     * 图片存储的相对路径.图片最终存储的位置需要加上getImgBasePath方法返回的basePath
     * <p>
     * 数据库tb_shop中的shop_img字段存储的是该相对路径，即该方法的返回值
     * @return: String
     */
    public static String getShopImagePath(long shopId) {
        String shopImgPath = "/upload/item/shopImage/" + shopId + "/";
        shopImgPath = shopImgPath.replace("/", seperator);
        logger.debug("shopImgPath: {}", shopImgPath);
        return shopImgPath;
    }

    /**
     * @return
     * @Title: getWaterMarkFile
     * @Description: 水印文件的位置。理应配置到数据库配置表中或者配置文件中。
     * <p>
     * 同样的这里为了简化操作,硬编码
     * @return: File
     */
   /* public static File getWaterMarkFile() {
        String basePath = FileUtil.getImgBasePath();
        System.out.println("basePathFileUtilgetWaterMakFile:" + basePath);
        String waterMarkImg = basePath + "watermark/watermark.jpg";
        waterMarkImg = waterMarkImg.replace("/", seperator);
        logger.debug("waterMarkImg path: {}", waterMarkImg);
        return new File(waterMarkImg);
    }*/

   /* private static String seperator = System.getProperty("file.separator");
    private static final SimpleDateFormat sDateFormat = new SimpleDateFormat(
            "yyyyMMddHHmmss"); // 时间格式化的格式
    private static final Random r = new Random();

    public static String getImgBasePath() {
        String os = System.getProperty("os.name");
        String basePath = "";
        if (os.toLowerCase().startsWith("win")) {
            basePath = "D:/o2o-image/";
        } else {
            basePath = "D:/o2o-home-image";
        }
        basePath = basePath.replace("/", seperator);
        return basePath;
    }

    public static String getHeadLineImagePath() {
        String headLineImagePath = "/upload/images/item/headtitle/";
        headLineImagePath = headLineImagePath.replace("/", seperator);
        return headLineImagePath;
    }

    public static String getShopCategoryImagePath() {
        String shopCategoryImagePath = "/upload/images/item/shopcategory/";
        shopCategoryImagePath = shopCategoryImagePath.replace("/", seperator);
        return shopCategoryImagePath;
    }

    public static String getPersonInfoImagePath() {
        String personInfoImagePath = "/upload/images/item/personinfo/";
        personInfoImagePath = personInfoImagePath.replace("/", seperator);
        return personInfoImagePath;
    }

    public static String getShopImagePath(long shopId) {
        StringBuilder shopImagePathBuilder = new StringBuilder();
        shopImagePathBuilder.append("/upload/images/item/shop/");
        shopImagePathBuilder.append(shopId);
        shopImagePathBuilder.append("/");
        String shopImagePath = shopImagePathBuilder.toString().replace("/",
                seperator);
        return shopImagePath;
    }

    public static String getRandomFileName() {
        // 生成随机文件名：当前年月日时分秒+五位随机数（为了在实际项目中防止文件同名而进行的处理）
        int rannum = (int) (r.nextDouble() * (99999 - 10000 + 1)) + 10000; // 获取随机数
        String nowTimeStr = sDateFormat.format(new Date()); // 当前时间
        return nowTimeStr + rannum;
    }

    public static void deleteFile(String storePath) {
        File file = new File(getImgBasePath() + storePath);
        if (file.exists()) {
            if (file.isDirectory()) {
                File files[] = file.listFiles();
                for (int i = 0; i < files.length; i++) {
                    files[i].delete();
                }
            }
            file.delete();
        }
    }*/
}
